package com.greyshark.sanotrive.wxapi

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import com.common.app.data.bean.KeyEvents
import com.common.app.data.bean.PayResult
import com.common.app.data.bean.PayStatus
import com.common.app.data.bean.PayType
import com.common.base.config.AppConfig
import com.common.base.utils.LogUtils
import com.jeremyliao.liveeventbus.LiveEventBus
import com.tencent.mm.opensdk.modelbase.BaseReq
import com.tencent.mm.opensdk.modelbase.BaseResp
import com.tencent.mm.opensdk.openapi.IWXAPI
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler
import com.tencent.mm.opensdk.openapi.WXAPIFactory

class WXPayEntryActivity : Activity(), IWXAPIEventHandler {
    /**
     * 0	成功	展示成功页面
     * -1	错误	可能的原因：签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
     * -2	用户取消	无需处理。发生场景：用户不支付了，点击取消，返回APP。
     */
    private val WXPAY_SUCCESS = 0
    private val WXPAY_CANCEL = -2
    private val WXPAY_ERROR = -1
    private var api: IWXAPI? = null
    public override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        api = WXAPIFactory.createWXAPI(this, AppConfig.WX_APP_ID)
        api?.handleIntent(intent, this)
    }

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        setIntent(intent)
        api?.handleIntent(intent, this)
    }

    override fun onReq(req: BaseReq) {}
    override fun onResp(resp: BaseResp) {
        LogUtils.e("WxPayEntry", "errCode: ${resp.errCode}")
        when (resp.errCode) {
            WXPAY_CANCEL -> LiveEventBus.get(KeyEvents.KEY_PAY_RESULT, PayResult::class.java).post(PayResult(PayType.WECHAT, PayStatus.CANCEL))
            WXPAY_SUCCESS -> LiveEventBus.get(KeyEvents.KEY_PAY_RESULT, PayResult::class.java).post(PayResult(PayType.WECHAT, PayStatus.SUCCESS))
            WXPAY_ERROR -> LiveEventBus.get(KeyEvents.KEY_PAY_RESULT, PayResult::class.java).post(PayResult(PayType.WECHAT, PayStatus.FAILED))
        }
        finish()
    }
}